﻿using System;
using Obj;
using System.Collections.Generic;
using DAL;


namespace BLL
{
    /// <summary>
    /// Summary description for BLLUsuario
    /// </summary>
    public class BLLUsuario
    {

        #region novosMetodos


        public int Save(objUsuario usuario, action acao)
        {
            int ret = 0;

            switch (acao) 
            { 
                case action.INSERT:
                    ret = Insert(usuario);
                    break;
                case action.UPDATE:
                    ret = Update(usuario);
                    break;
                case action.DELETE:
                    ret = Delete(usuario);
                    break;
                default:
                    throw new Exception("Operação Inválida");
            }

            return ret; 

        }


        /// <summary>
        /// Metodo utilizado para ativar um usuario pelo link recebido no email. 
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public objUsuario Ativar(objUsuario usuario)
        {
            /* 
             * IMPLEMNTACOES NECESSARIAS
             * Validar se a chave recebida e valida
             * mostrar o formulario com os dados do usuario (Nome e senha);  
             *  
             *   
            */
            return new objUsuario("gdgdgd"); ;
        }


        private int Update(objUsuario usuario)
        {

            SQLUsuario SQLUsuario = new SQLUsuario();
            SQLUsuario.Update(usuario);
            return 0;
        }


        private int Delete(objUsuario usuario)
        {

            SQLUsuario SQLUsuario = new SQLUsuario();
            SQLUsuario.Delete(usuario);
            return 0;
        }
        
        #endregion
        
        
        
        public int Insert(objUsuario usuario) 
        {
            /* 
             * IMPLEMNTACOES NECESSARIAS
             * Verificar se o email recebido ja nao esta sendo utilizado por outro usuario.
             * Gerar uma chave de acesso para o usuario.  
             * Incluir o usuario na base de dados 
             * Enivar Notificacao para o Usuario.  
            */
            SQLUsuario SQLUsuario = new SQLUsuario();
            SQLUsuario.Insert(usuario);
            return 0;
        
        }

        public List<objUsuario> lstUsuario()
        {
            SQLUsuario SQLUsuario = new SQLUsuario();
            return SQLUsuario.SelectAll();
        }
        public List<objUsuario> lstUsuario(objUsuario usuario)
        {
            SQLUsuario SQLUsuario = new SQLUsuario();
            return SQLUsuario.SelectAll(usuario);
        }
        public objUsuario Select(objUsuario usuario)
        {
            SQLUsuario SQLUsuario = new SQLUsuario();
            return SQLUsuario.Select(usuario);
        }
        public objUsuario SelectByID(objUsuario usuario)
        {
            SQLUsuario SQLUsuario = new SQLUsuario();
            return SQLUsuario.SelectByID(usuario.UsuarioID);
        }

        public bool SelectByEmail(string email) 
        {
            SQLUsuario SQLUsuario = new SQLUsuario();
            if ((int)SQLUsuario.selectByEmail(email) > 0)
                return true;

            return false;
        }

    }
}